package at.ac.tuwien.vpsbcm.spielzeugfabrik.alternativ.communication;

import javax.jms.*;

import at.ac.tuwien.vpsbcm.spielzeugfabrik.alternativ.teile.Rad;
import at.ac.tuwien.vpsbcm.spielzeugfabrik.alternativ.teile.Holzgehaeuse;
import at.ac.tuwien.vpsbcm.spielzeugfabrik.alternativ.teile.Schornstein;

public class ObjectListener implements MessageListener {
    
    public Rad rad;
    /**
     * Casts the message to a ObjectMessage.
     *
     * @param message     the incoming message
     */
    public void onMessage(Message message) {
        ObjectMessage oMsg = null;           
        try { 
          if (message instanceof ObjectMessage) {                
                oMsg = (ObjectMessage) message;
                if (oMsg.getStringProperty("bauteil").equals("Rad")) {
                    System.out.println("Reading message: " + ((Rad)oMsg.getObject()).getName() + ((Rad)oMsg.getObject()).getId());
                    rad = (Rad)oMsg.getObject();
                }else if (oMsg.getStringProperty("bauteil").equals("Holzgehaeuse")){
                    System.out.println("Reading message: " + ((Holzgehaeuse)oMsg.getObject()).getName() + ((Holzgehaeuse)oMsg.getObject()).getId());                   
                }else if (oMsg.getStringProperty("bauteil").equals("Schornstein")) {
                    System.out.println("Reading message: " + ((Schornstein)oMsg.getObject()).getName() + ((Schornstein)oMsg.getObject()).getId());
                }
            } else {
                System.out.println("Message of wrong type: " + message.getClass().getName());
            }
        } catch (JMSException e) {
            System.out.println("JMSException in onMessage(): " +
                e.toString());
        } catch (Throwable t) {
            System.out.println("Exception in onMessage():" +
                t.getMessage());
        }
    }
    
    public Rad getRad() {
        return this.rad;
    }
 
}
